﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Text;
using EnumUtils;
using EnumUtils.Extensions;
using EnumUtilsTests;
using EnumUtilsTests.TestingEnums;
using NUnit.Framework;


namespace EnumUtilsTests.Extensions
{
  [TestFixture]
  public class FlagEnumExtensionsTests
  {
   #region BitSheftLeft Tests
//TODO: Make sure all bit-shifting tests are C.O.R.R.E.C.T.
    [Test]
    [ExpectedException(typeof(ArgumentNullException))]
    public void BitShiftLeftUsingNullEnumTest( ) {
      FlagEnumUtilitiesTests wrappedTestFixture = new FlagEnumUtilitiesTests();
      wrappedTestFixture.BitShiftLeftNullEnumTest();
    }


    [Test]
    [ExpectedException(typeof(ArgumentException))]
    public void
    BitShiftLeftUsingRegularEnumTest( ) {
      FlagEnumUtilitiesTests wrappedTestFixture = new FlagEnumUtilitiesTests();
      wrappedTestFixture.BitShiftLeftUsingRegularEnumTest();
    }


    [Test]
    public void
    BitShiftLeftUsingFlagsEnumTest( ) {
      FlagEnumUtilitiesTests wrappedTestFixture = new FlagEnumUtilitiesTests();
      wrappedTestFixture.BitShiftLeftUsingFlagsEnumTest();
      }
    #endregion


    


    #region BitShiftRight Tests
    [Test]
    [ExpectedException(typeof(ArgumentNullException))]
    public void BitShiftRightUsingNullEnumTest( ) {
      FlagEnumUtilitiesTests wrappedTestFixture = new FlagEnumUtilitiesTests();
      wrappedTestFixture.BitShiftRightNullEnumTest();
    }


    [Test]
    [ExpectedException(typeof(ArgumentException))]
    public void
    BitShiftRightUsingRegularEnumTest( ) {
      FlagEnumUtilitiesTests wrappedTestFixture = new FlagEnumUtilitiesTests();
      wrappedTestFixture.BitShiftRightUsingRegularEnumTest();
    }


    [Test]
    public void
    BitShiftRightUsingFlagsEnumTest( ) {
      FlagEnumUtilitiesTests wrappedTestFixture = new FlagEnumUtilitiesTests();
      wrappedTestFixture.BitShiftRightUsingFlagsEnumTest();
    }
    #endregion
  }
}
